package com.gymmsystem.GYMMSystem.service;

import com.gymmsystem.GYMMSystem.entity.UserMessage;

import java.util.List;

public interface UserMessageService {
    /**
     * 获取用户的所有消息（已读消息在前，未读消息在后，按创建时间排序）
     */
    List<UserMessage> findMessagesByUserId(Long userId);

    /**
     * 获取用户的未读消息数量
     */
    int countUnreadMessages(Long userId);

    /**
     * 将消息标记为已读
     */
    boolean markAsRead(Long id);

    /**
     * 将用户的所有消息标记为已读
     */
    boolean markAllAsRead(Long userId);

    /**
     * 生成课程预约成功消息
     */
    boolean insertBookingMessage(Long userId, String content, Long reservationId);

    /**
     * 生成课程取消预约消息
     */
    boolean insertCancelMessage(Long userId, String content, Long reservationId);

    /**
     * 根据预约ID查询相关消息
     */
    List<UserMessage> findMessagesByReservationId(Long reservationId);

    /**
     * 删除用户的所有消息
     */
    boolean deleteMessagesByUserId(Long userId);

    /**
     * 删除已读消息
     */
    boolean deleteReadMessages(Long userId);

    /**
     * 根据ID获取消息详情
     */
    UserMessage getMessageById(Long id);

    /**
     * 创建新消息
     */
    Long createMessage(UserMessage userMessage);
}